//网络模块核心代码实现
/**
 * 多种请求方式
 * URL请求地址管理
 * 参数管理
 * 网络请求提示
 * 数据返回
 * 错误处理
 */
 import axios from "axios";
 import {
  BASE_URL
 } from "./config"
import Message from "../components/common/message/index";


 /**
  * axios.create:通过配置对象返回一个axios对象
  * baseURL：添加基础请求路径，使用配置过axios对象发送请求时，会默认带配置好的baseURL
  * 
*/

 let instance = axios.create({
   baseURL:BASE_URL,//未经定义的魔法值
   timeout:10000
 });

 // 添加请求拦截器
instance.interceptors.request.use(function(config) {
  // 在发送请求之前做些什么
  return config;
},function(error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response;
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error);
});

 /**
  * 
  * @param {*} config 
  * 类型：对象
  * 请求方式 
  * 请求地址
  * 请求参数
  * {
  *   url?: string;
  *   method?: Method;
  *   params:{}
  * }
  */

 export default async function request(config){
   //针对不同请求，添加请求独有的配置
   return instance.request(config).then((res)=>{
      return res;
   }).catch((error)=>{
      console.log(error);
      // alert("请求失败");
      Message.message({
        message:"1111112222333",
        type:"faild"
      })
   })
 }





 
 